# 列表
# 基本格式：列表名 = [元素1, 元素2, 元素3, ...元素n]
# 所有元素在[]内，元素与元素之间用,分割
# 元素之间的数据类型，可以各不相同
list = [1, 2, 3, 4]
for li in list:
    print(li)
# 1、添加元素 append() extend() insert()
li = ['one', 'two', 'three']
li.append('four')
print(li)

li.extend('four')  # extend是分散添加
print(li)  # ['one', 'two', 'three', 'four', 'f', 'o', 'u', 'r']

li.insert(3, 'four')  # 放到第三个位置，在指定位置查到元素
li.insert(0, 'four')  # 放到第三个位置，在指定位置查到元素，指定位置如果有元素，则会后移
print(li)

# 2、修改元素
# 直接通过下标即可进行修改
list = [1, 2, 3]
list[2] = 'a'
print(list)

# 3、查找元素
# in: 判断指定元素是否存在列表中，存在则返回True，不存在则返回False
list1 = ['a', 'b', 'c']
print('b' in list1)
print('b' not in list1)

# name_list = ['bingbing', 'susu', 'ziyi']
# while True:
#     names = input("请输入您的昵称：")
#     # not in判断指定元素是否不存在列表中，不存在则返回True，存在则返回False
#     if names not in name_list:
#         print(f'您输入的昵称为{names}可以注册')
#         name_list.append(names)
#         print(name_list)
#     else:
#         print(f'您输入的昵称{names}已存在')
#         break

# 4、删除元素 del
lists = ['a', 'b', 'c', 'd', 'e']
# del lists # 删除列表
del lists[2]  # 删除指定下标的数据
print(lists)

# 5、删除元素 pop 删除制定下标的数据
lists = ['a', 'b', 'c', 'd', 'e']
lists.pop()  # 默认删除最后一个数据
print(lists)
lists.pop(2)  # 删除指定下标的数据
print(lists)

# 6、remove：根据元素的值进行删除
list1 = ['a', 'b', 'c', 'd', 'e', 'f']
list1.remove('a')
print(list1)
# list1.remove('t') # 报错，列表中不存在这个元素的时候，就会报错
print(list1)

# 7、排序
# 7.1、sort将列表按特定顺序重新排列，默认从小到大
list2 = [1, 5, 2, 78, 56]
list2.sort()
print(list2)
# 7.2、reverse，倒序排序
list2.reverse()
print(list2)

# 8、列表推导式
# 格式1：[表达式 for 变量 in 列表]
# 注意：in后面不仅可以放列表，还可以放range（）函数或可迭代对象
list2 = [1, 2, 3, 4, 5, 6]
[print(i) for i in list2]  # 前面的i是表达式

lii = []
# for i in range(1, 6):
#     print(i)
#     lii.append(i)
# print(lii)
# 下面与上面等价
[lii.append(i) for i in range(1, 6)]
print(lii)

# 格式2：[表达式 for 变量 in 列表 if 条件]
liist = []
[liist.append(i) for i in range(1, 6) if i % 2 == 1]
print(liist)

# 9、列表嵌套
# 含义：一个类表中又有一个列表
list5 = [1, 2, 3, [4, 5, 6]]
print(list5[3])
print(list5[3][2]) # 嵌套列表中取数

